package cn.kgc.itrip.util;

import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import javax.annotation.Resource;

/**
 * @author 阿泽
 * 工具类
 */
@Component
public class RedisApi {

    @Resource
    private JedisPool jedisPool;

    /**
     * 向redis中心存值
     * @param name  键
     * @param value 值
     */
    public void set(String name, String value) {
        //获取连接池对象
        Jedis jedis = jedisPool.getResource();
        jedis.set(name, value);
        //将资源放回连接池中
        jedisPool.returnBrokenResource(jedis);
    }

    /**
     * 向redis 中存值，并且设置过期时间
     *
     * @param name
     * @param value
     * @param time
     */
    public void setEx(String name, String value, Integer time) {

        //获取连接
        Jedis jedis = jedisPool.getResource();
        jedis.setex(name, time, value);
        //将资源放回连接池中
        jedisPool.returnBrokenResource(jedis);
    }

    /**
     * 同过键获取指定的值
     *
     * @param key
     */
    public String get(String key) {
        //获取连接
        Jedis jedis = jedisPool.getResource();
        String value = jedis.get(key);
        //将资源放回连接池中
        jedisPool.returnBrokenResource(jedis);
        return value;
    }

    /**
     * 删除rdis中的数据
     *
     * @param key
     * @return 0: 失败或者是成功 大于1表示成功
     */

    public Long del(String... key) {
        //获取连接
        Jedis jedis = jedisPool.getResource();
        Long value = jedis.del(key);
        //将资源放回连接池中
        jedisPool.returnBrokenResource(jedis);
        return value;
    }

    /**
     * 获取键的剩余秒数
     * @param key
     * @return 返回当前key的剩余秒数
     */
    public long ttl(String key) {
        Jedis jedis = jedisPool.getResource();
        Long ttl = jedis.ttl(key);
        jedisPool.returnBrokenResource(jedis);
        return ttl;
    }

    /**
     * 判断指定的key 是否存在
     * @param key
     * @return 返回当前的 key
     */
    public boolean exists(String key){
        Jedis jedis = jedisPool.getResource();
        Boolean exists = jedis.exists(key);
        jedisPool.returnBrokenResource(jedis);
        return exists;
    }

}
